"""
语法：
    try:
        可能发生错误的代码   <-----监控区
    except:
        如果出现异常执行的代码  <------逮捕区
需求：尝试打开 test.txt文件
"""
try:
    f = open('test.txt','r',encoding="UTF-8")#在try尝试打开这个文件，如果存在，就顺利通过
except:#并没有执行特定的异常，默认执行Exception
    print("此文件不存在")#如果不存在就执行输出语句

"""
语法：
    try:
        可能发生错误的代码   <-----监控区
    except 异常的类型 as 变量名:当捕获多个异常时，可以把要捕获的异常类型的名字，放到except后，并使用元组的方式进行书写；在except输出异常描述信息
        如果出现异常执行的代码  <------逮捕区
需求：尝试执行打印num,捕获异常类型为NameError。如果捕获到这个异常输出 有错误
"""
try:
    #print(num)
    print(1/0)
except (NameError,ZeroDivisionError) as result:  # 在except监控多个异常 在except输出异常描述信息
    print('有错误')
    print("异常描述信息:",result)



"""
语法：
    try:
        可能发生错误的代码   <-----监控区
    except:
        如果出现异常执行的代码  <------逮捕区
    else:
        如果没有异常要执行的代码   <----- 正常区 释放区
"""
try:
    print("1")
except Exception as result:
    print(result)
else:
    print("无罪释放")

"""
语法：
    try:
        可能发生错误的代码   <-----监控区
    except:
        如果出现异常执行的代码  <------逮捕区
    else:
        如果没有异常要执行的代码   <----- 正常区 释放区
    finally:
        无论是否有异常发生都会执行的代码   <----- 始终区 最终区
需求：尝试以r打开 niit.txt,正常就读取内容,如果有异常就以为a打开这个文件，最终关闭文件
"""
try:
    f = open("niit.txt",'r',encoding='utf-8')
except Exception as result:
    f = open('niit.txt','w',encoding='utf-8')
    f.write(str(result))
else:
    s = f.read()
    print("正常输出：",s)
finally:
    f.close()